package br.com.Servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.tomcat.jni.User;

import br.com.Dao.CupomDao;
import br.com.Dao.UsuarioClienteDao;
import br.com.Dao.UsuarioComercianteDao;
import br.com.Modelo.Cupom;
import br.com.Modelo.UsuarioCliente;
import br.com.Modelo.UsuarioComerciante;

@WebServlet("/logar")
public class LoginServlet extends HttpServlet{
	private static final long serialVersionUID = 1L;
	 
	/**
	 * @see HttpServlet#doPost(HttpServletRequest req, HttpServletResponse res)
	 */
	protected void doPost(HttpServletRequest req , HttpServletResponse res) throws IOException {
		
			System.out.print("ola");
			
			String login = req.getParameter("login");
			String senha = req.getParameter("senha");
			System.out.print("login"+login+" , senha="+senha+"");
			
			UsuarioClienteDao dao = new UsuarioClienteDao();
			UsuarioComercianteDao daoC = new UsuarioComercianteDao();
			CupomDao daoCupom = new CupomDao();
			UsuarioCliente cliente;
			UsuarioComerciante clienteComerciante;
			
			cliente = dao.validaAutenticacaoUser(login, senha);
			clienteComerciante = daoC.validaAutenticacaoUser(login, senha);
			
			
			System.out.println("cliente ->"+cliente);
			System.out.println("comerciante ->"+clienteComerciante);			
			
			System.out.println(req.getParameter("pagina"));
			
			String pagina = req.getParameter("pagina");
			
			String dadosUrl = req.getParameter("dadosUrl");
			
			String dadosPagina = req.getParameter("dadosPagina");
			
			System.out.println("JS=="+dadosPagina);
			
			Calendar c = Calendar.getInstance();
			System.out.println("Dia hoje ->"+c.get(Calendar.DAY_OF_MONTH));
			
			
		   if(cliente != null){
			
			if(cliente.getAutenticacao()==1){
				String[] usr = new String[2];
				usr[0] = ""+cliente.getId();
				usr[1] = ""+cliente.getAutenticacao();
				HttpSession session = req.getSession();
				session.setAttribute("user", usr);
				//setting session to expiry in 30 mins
				session.setMaxInactiveInterval(20*60);
				Cookie userName = new Cookie("user", cliente.getLogin());
				userName.setMaxAge(5*60);
				res.addCookie(userName);
				
				pagina = validaUrl(pagina,req,dadosUrl);
			
				System.out.println("nova page "+pagina);
				
				//verficar mes cupom cliente
				if(daoCupom.verficarMesCupom(cliente.getId(), c.get(Calendar.DAY_OF_MONTH))== 1){
					
					System.out.println("renovando mes_cupons "+pagina);
					daoCupom.atualizarMesCupom(cliente.getId(), c);
					System.out.println("mes atualizado ");
					
				}
				
				  if(daoCupom.getCupomAtivo(cliente.getId()).getProgresso() == 100){
						System.out.println("cupom ativo ");
					   daoCupom.atualizarSituacaoCupomAtivo(cliente.getId());
					   daoCupom.atualizarCupomAtivo(cliente.getId());
					   
				   }
				
				if(daoCupom.verficarDiaCupom(cliente.getId(), c.get(Calendar.DAY_OF_MONTH))==-1){
					System.out.println("dia cupom");
					daoCupom.atualizarDiaCupom(cliente.getId(), c);
					Cupom cupom =new Cupom();
					cupom  = daoCupom.getCupomAtivo(cliente.getId());
					cupom.setProgresso(cupom.getProgresso()+20);
					daoCupom.atualizarProgressoCupom(cliente.getId(),cupom.getProgresso());
				}
				
			 
				
				//res.sendRedirect(pagina);  
				res.sendRedirect("index.jsp");
				
				
			
			}else{
				System.out.println("entrou aqui");
				res.sendRedirect("index.jsp?check-user=false");  
				/*RequestDispatcher rd = getServletContext().getRequestDispatcher("/erro.jsp?check-user=false");
			PrintWriter out= res.getWriter();
			
			out.println("<font color=red>Login e invalido</font>");
			try {
				rd.include(req, res);
			} catch (ServletException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} */
			}
		   }else if(clienteComerciante != null){
			   if(clienteComerciante.getAutenticacao()==2){		
				   String[] usr = new String[2];
				   usr[0] = ""+clienteComerciante.getId();
				   usr[1] = ""+clienteComerciante.getAutenticacao();
				   HttpSession session = req.getSession();
				   session.setAttribute("user", usr);
					//setting session to expiry in 30 mins
				   session.setMaxInactiveInterval(20*60);
				   Cookie userName = new Cookie("user", ""+clienteComerciante.getLogin());
				   userName.setMaxAge(30*60);
				   res.addCookie(userName);		
					pagina = validaUrl(pagina,req,dadosUrl);					
					System.out.println("nova page "+pagina);
				  
				  // res.sendRedirect(req.getParameter("pagina") + ".jsp");  
				   res.sendRedirect("admin/admin_loja.jsp");		
				 //  res.sendRedirect(pagina);
			   }
			
		   }else{
		   	System.out.println("entrou aqui");
		   	res.sendRedirect("index.jsp?check-user=false");   
			  /* RequestDispatcher rd = getServletContext().getRequestDispatcher("/erro.jsp?check-user=false");
				PrintWriter out= res.getWriter();	
		        res.setContentType("text/html;charset=UTF-8");
				//out.println("<font color=red>Login e Senha Invalidos!! Tente Novamente </font>");
				try {
					rd.include(req, res);
				} catch (ServletException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			   
			   */
		   }                        // fim c null
		   
		
		
		
	}


	
	public String validaUrl(String pagina,HttpServletRequest req, String dadosUrl){
		
		int contadorBarra=0;
		
		for(int i = 0 ; i < pagina.length(); i++){
			
			if(pagina.charAt(i)=='/'){
				
				contadorBarra++;
				
			}
		
		}
		if(contadorBarra > 1){
			
			return req.getParameter("dadosPagina");
			
		}
		
		if(pagina.equals("/resultado.jsp")){
			
			return req.getParameter("dadosPagina");
			
		}
		if(pagina.equals("/resultado.jsp")){
			
			return req.getParameter("dadosPagina");
		}
		
		if(pagina.equals("/cadastro.jsp")){
			
			return "cadastrar";
		}
		
		
		if(pagina.equals("/product_detail.jsp")){
			
			return "."+pagina+"?prod="+dadosUrl;
		}
		return "."+pagina;
		
		
	}

}